創建帳戶並進行存款、取款操作:
"123456"
和 "654321"
,持有人分別為 "張三"
和 "李四"
。"123456"
進行存款操作,存入 1000 元,然後取款 300 元,檢查餘額是否為 700 元。"654321"
進行存款操作,存入 2000 元,然後取款 500 元,檢查餘額是否為 1500 元。預期結果:
"123456"
的最終餘額應為 700 元,交易記錄應顯示一次存款和一次取款。"654321"
的最終餘額應為 1500 元,交易記錄應顯示一次存款和一次取款。查詢餘額:
預期結果:
"123456"
的餘額應顯示 700 元。"654321"
的餘額應顯示 1500 元。測試餘額不足的情況:
"123456"
進行取款操作,取出 800 元(超過現有餘額 700 元)。預期結果:
測試無效帳戶號的情況:
"000000"
),或者進行存款/取款操作。預期結果:
測試無效操作的情況:
#
)或其他不相關的操作。預期結果:
程式如下⬇️
import java.util.ArrayList;
import java.util.Date;
class Transaction {
private String type;
private double amount;
private Date date;
public Transaction(String type, double amount) {
this.type = type;
this.amount = amount;
this.date = new Date(); // 記錄交易的當前時間
}
public String toString() {
return date.toString() + ": " + type + " " + amount;
}
}
class Account {
private String accountNumber;
private String ownerName;
private double balance;
private ArrayList transactions;
public Account(String accountNumber, String ownerName) {
this.accountNumber = accountNumber;
this.ownerName = ownerName;
this.balance = 0.0;
this.transactions = new ArrayList<>();
}
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
transactions.add(new Transaction("Deposit", amount));
System.out.println("成功存入 " + amount + " 元。");
} else {
System.out.println("存款金額無效!");
}
}
public void withdraw(double amount) {
if (amount > 0 && balance >= amount) {
balance -= amount;
transactions.add(new Transaction("Withdraw", amount));
System.out.println("成功取出 " + amount + " 元。");
} else if (amount > balance) {
System.out.println("餘額不足!");
} else {
System.out.println("取款金額無效!");
}
}
public double getBalance() {
return balance;
}
public void printTransactions() {
System.out.println("帳戶 " + accountNumber + " 的交易記錄:");
for (Transaction t : transactions) {
System.out.println(t);
}
}
}
public class BankTest {
public static void main(String[] args) {
// 創建兩個帳戶
Account account1 = new Account("123456", "張三");
Account account2 = new Account("654321", "李四");
// 進行存款和取款操作
account1.deposit(1000);
account1.withdraw(300);
account2.deposit(2000);
account2.withdraw(500);
// 查詢餘額並檢查結果
System.out.println("帳戶 " + account1.getBalance() + " 的餘額為 " + account1.getBalance() + " 元。");
System.out.println("帳戶 " + account2.getBalance() + " 的餘額為 " + account2.getBalance() + " 元。");
// 打印交易記錄
account1.printTransactions();
account2.printTransactions();
// 測試異常情況
account1.withdraw(800); // 餘額不足
Account invalidAccount = null;
if (invalidAccount == null) {
System.out.println("無效帳戶號!");
}
char invalidOperation = '#';
if (invalidOperation != 'D' && invalidOperation != 'W') {
System.out.println("無效操作!");
}
}
}
###語法說明:
1. 類的定義:
• 使用 class 關鍵字定義了三個類:Transaction、Account 和 BankTest。每個類分別封裝了交易記錄、帳戶操作和測試邏輯。
2. 構造函數:
• Transaction 和 Account 類中使用了構造函數(例如 public Transaction(String type, double amount))來初始化對象的屬性。
3. 屬性和方法:
• 在 Account 類中,屬性 balance 是私有的(private),只能通過公共方法 deposit() 和 withdraw() 來修改,這是面向對象編程中的封裝概念。
4. 控制流:
• 使用 if-else 語句來處理條件判斷,如驗證存款和取款金額的有效性,以及處理餘額不足和無效操作的情況。
5. 集合類型:
• 使用 ArrayList<Transaction> 來存儲多個交易記錄。ArrayList 是 Java 中的集合類,用於動態存儲數據。
6. 日期處理:
• 使用 new Date() 來記錄交易的發生時間,並將其保存在 Transaction 對象中。
7. 打印輸出:
• 使用 System.out.println() 來輸出信息,方便在控制台檢查程序運行結果。